'''
Created on 28.01.2012

@author: Konstantin
'''
import os
import re
from configparser import ConfigParser



def init(config_directory_name):
    try:
        if confg_data.config_directory_name != config_directory_name:
            print('warning config_directory_name is different')
    except:
        confg_data.set_value(config_directory_name)
    

class ConfigData():
    
    config_parser = None
    processed_file_list = {}
    
    def set_value(self, config_directory_name = './config'):
        self.config_directory_name = config_directory_name
        config_list = os.listdir(config_directory_name)
        config_file_list = [config_directory_name + '/' + f for f in config_list if re.search('.ini$', f)]
        
        config_parser = ConfigParser()
        self.processed_file_list = config_parser.read(config_file_list)
        self.config_parser = config_parser        
    

confg_data = ConfigData()

class ConfigFileParser(object):
    '''
    Модуль для загрузки файлов конфигурации.
    
    Предназначен для использования в __main__
    '''
    #__shared_state = {'config_parser': confg_data.config_parser, 'processed_file_list': confg_data.processed_file_list}

    def __init__(self, config_directory_name = './config'):
        '''
        Производится загрузка файлов с расширением ini из папки config. На выход передается объект configparser.
        '''
        #self.__dict__ = self.__shared_state
        init(config_directory_name)

    def get_config_parser(self):
        '''
        возвращает объект парсера
        '''
        return confg_data.config_parser
    
    def get_processed_file_list(self):
        '''
        возвращает список обрабанных файлов.
        '''
        return confg_data.processed_file_list
    